home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
pluginy Firefox
/
9825
/
9825.xpi
/
chrome
/
content
/
related_articles.js
< prev
next >
Wrap
Text File
|
2010-01-12
|
5KB
|
133 lines
//Note to editor: NOT executed from XUL
//var smarterwiki_$ = SmarterWiki.$;
//var smarterwiki_$ = jQuery.noConflict(true);
(function()
{
//var $ = smarterwiki_$;
var getBoolPref = function(pref_name, callback)
{
if(callback)
{
callback(safe_SW_getBoolPref("extensions.smarterwiki." + pref_name));
}
};
if(window.chrome && window.chrome.extension) // detect chrome
{
var get_localStorage = function(key, callback) //only used for Chrome
{
chrome.extension.sendRequest({"msg_type": "get_localStorage", "key": key}, function(response)
{
if(callback)
{
callback(response.value);
}
});
};
var set_localStorage = function(key, value, callback) //only used for Chrome
{
chrome.extension.sendRequest({"msg_type": "set_localStorage", "key": key, "value": value}, function(response)
{
if(callback)
{
callback(response.status);
}
});
};
setBoolPref = function(pref_name, value, callback)
{
set_localStorage("pref." + pref_name, value, callback);
};
getBoolPref = function(pref_name, callback)
{
get_localStorage("pref." + pref_name, function(str)
{
if(callback) {
callback(str == "true");
}
});
};
SW_$ = $;
SW_LOG = function(){};
$.get = function(url, data, callback, type)
{
chrome.extension.sendRequest({"msg_type": "$.get", "url": url, "data": data, "type": type}, function(response)
{
if(callback)
{
callback(response.data, response.textStatus);
}
});
};
}
var safe_SW_getBoolPref = function(name)
{
try
{
return SW_getBoolPref(name);
}
catch(err)
{
return null;
}
};
getBoolPref("add_related_articles", function(pref_value)
{
if(pref_value)
{
var doc = document;
var urlRegExp = new RegExp("(http(?:|s)://en.wikipedia.org/wiki/)(.*)");
var match = urlRegExp.exec(doc.location.href);
if(match != null)
{
//on a Wikipedia page
var wgPageName = match[2];//.replace("_", " ");
var title_match = new RegExp("^(.*) - .*$").exec(doc.title);
var wgArticleName = ""; //Main Page has no title in that format
if(title_match)
{
wgArticleName = title_match[1];
}
var wgArticlePath = match[1];
//var locale = SW_getCharPref("general.useragent.locale");
var locale = navigator.language;
var addRelatedArticlesBox = function(html, textStatus)
{
var searchPortlet = $('#p-search', doc);
if(searchPortlet && searchPortlet.attr("class") == "portlet")
{
var relatedPortlet = $('<div id="p-smarterwiki"></div>', doc);
relatedPortlet.addClass('portlet', doc);
relatedPortlet.append(html);
relatedPortlet.insertBefore(searchPortlet);
/*
relatedPortlet.click(function()
{
});
*/
}
else
{
var $navPortlet = $("#p-navigation");
var $relatedPortlet = $('<div id="p-smarterwiki"></div>', doc).addClass('portal', doc).append(html).insertAfter($navPortlet);
$relatedPortlet.find(".pBody").removeClass("pBody").addClass("body");
$relatedPortlet.find("h5").text("Related articles");
}
};
SW_$.get("http://static.smarterfox.com/api/related_articles",
{'topic': wgArticleName,
'locale': locale,
'format': 'html_frag'}, addRelatedArticlesBox, "html");
}
}
});
}());